import wx

class MyFrame(wx.Frame):
    def __init__(self, *args, **kw):
        super(MyFrame, self).__init__(*args, **kw)

        # 创建一个面板
        panel = wx.Panel(self)

        # 创建一个垂直布局的 sizer
        vbox = wx.BoxSizer(wx.VERTICAL)

        # 创建一个 ToggleButton
        self.toggle_button = wx.ToggleButton(panel, label="关闭", pos=(20, 20), size=(100, 30))
        vbox.Add(self.toggle_button, 0, wx.ALL, 10)

        # 绑定 ToggleButton 的事件
        self.Bind(wx.EVT_TOGGLEBUTTON, self.OnToggle, self.toggle_button)

        # 设置面板的布局
        panel.SetSizer(vbox)

        # 设置窗口大小
        self.SetSize((300, 200))
        self.SetTitle("滑块式按钮示例")
        self.Centre()

    def OnToggle(self, event):
        # 获取按钮的状态
        state = self.toggle_button.GetValue()
        if state:
            self.toggle_button.SetLabel("开启")
            print("开关已开启")
        else:
            self.toggle_button.SetLabel("关闭")
            print("开关已关闭")

if __name__ == "__main__":
    app = wx.App(False)
    frame = MyFrame(None)
    frame.Show()
    app.MainLoop()
